package com.operator.Activitys;


import android.annotation.SuppressLint;
import android.app.Application;
import android.content.Context;
import android.os.StrictMode;
import android.support.multidex.MultiDex;

import com.baidu.ocr.sdk.OCR;
import com.baidu.ocr.sdk.OnResultListener;
import com.baidu.ocr.sdk.exception.OCRError;
import com.baidu.ocr.sdk.model.AccessToken;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.operator.Activitys.http.ApiService;
import com.operator.Activitys.utils.LogUtils;
import com.scwang.smartrefresh.header.TaurusHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator;
import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator;
import com.scwang.smartrefresh.layout.api.RefreshFooter;
import com.scwang.smartrefresh.layout.api.RefreshHeader;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.footer.BallPulseFooter;
import com.zhy.autolayout.config.AutoLayoutConifg;

import cn.jpush.android.api.JPushInterface;



/*
*
*          ┌─┐       ┌─┐
*       ┌──┘ ┴───────┘ ┴──┐
*       │                 │
*       │       ───       │
*       │  ─┬┘       └┬─  │
*       │                 │
*       │       ─┴─       │
*       │                 │
*       └───┐         ┌───┘
*           │         │
*           │         │
*           │         │
*           │         └──────────────┐
*           │                        │
*           │                        ├─┐
*           │                        ┌─┘
*           │                        │
*           └─┐  ┐  ┌───────┬──┐  ┌──┘
*             │ ─┤ ─┤       │ ─┤ ─┤
*             └──┴──┘       └──┴──┘
*                 神兽保佑
*                 代码无BUG!
*/

/**
 * 项目名称：金泽云 手机app（办卡、实名认证）
 * 类描述：APP 运行监视服务
 * 创建人：张飞祥
 * 创建时间：2018/3/1 13:30
 * 修改人：张飞祥
 * 修改时间：2018/3/1 13:30
 * 修改备注：
 */
public class OperatorApp extends Application {
    // 上下文菜单
    private Context mContext;
    // 记录是否已经初始化
    private boolean isInit = false;


    @SuppressLint("NewApi")
    @Override
    public void onCreate() {
        super.onCreate();
        mContext = this;
        /**
         * 网络请求 框架初始化
         */
        //app 网络请求框架 监视
        ApiService.getApiService().initService();
        /**
         * 初始化屏幕适配
         */
        AutoLayoutConifg.getInstance().useDeviceSize();
        /**
         * 极光推送 初始化
         */
        //初始化sdk
        JPushInterface.setDebugMode(false);//正式版的时候设置false，关闭调试
        JPushInterface.init(this);
        /**
         * 初始化 图像识别
         */
        initAccessToken();

        /**
         * 初始化 上拉加载，下拉刷新控件
         */
        initRefresh();

        /**
         * 初始化 ImageLoader
         *      ps：朋友圈用到，因为 用本项目 中的 Fresco 图片加载 会 内部转换 很长时间，导致 item 变得 很卡
         *          所有 才迫不得已 加入的
         */
        ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);
        ImageLoader.getInstance().init(configuration);

        /**
         * android 7.0系统解决拍照的问题
         */
        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
        StrictMode.setVmPolicy(builder.build());
        builder.detectFileUriExposure();

    }

    /**
     * 初始化 全局 上拉加载，下拉刷新控件 TaurusHeader
     */
    private void initRefresh() {
        //static 代码段可以防止内存泄露
        //设置全局的Header构建器
        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
            @Override
            public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
                layout.setPrimaryColorsId(R.color.colorAccent, android.R.color.white);//全局设置主题颜色
                return new TaurusHeader(context);
            }
        });
        //设置全局的Footer构建器
        SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
            @Override
            public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
                layout.setPrimaryColorsId(R.color.colorAccent, android.R.color.white);//全局设置主题颜色
                //指定为经典Footer，默认是 BallPulseFooter
//                return new RefreshFooterWrapper(new BezierCircleHeader(context));
                return new BallPulseFooter(context);
            }
        });
    }

    /**
     * 初始化 图像识别 （加密方式）
     */
    private void initAccessToken() {
        OCR.getInstance().initAccessToken(new OnResultListener<AccessToken>() {
            @Override
            public void onResult(AccessToken accessToken) {
                String token = accessToken.getAccessToken();
                LogUtils.i("百度AI：--------------->初始化成功！！");
            }
            @Override
            public void onError(OCRError error) {
                error.printStackTrace();
                LogUtils.e("百度AI：--------------->初始化失败！！");
            }
        }, getApplicationContext());
    }

    /**
     * 初始化  MultiDex.install(this); （必须 重写此方法 设置 MultiDex）
     * @param base
     */
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}
